@@ -33,6 +33,11 @@ urlpatterns += [  | 
            ||
| 33 | 33 | 
                urlpatterns += [  | 
            
| 34 | 34 | 
                url(r'^f/upload$', group_views.flyimg_upload_api, name='flyimg_upload_api'), # 飞图上传  | 
            
| 35 | 35 | 
                url(r'^f/list$', group_views.flyimg_upload_api, name='flyimg_list_api'), # 飞图列表  | 
            
| 36 | 
                + url(r'^f/comment/submit$', group_views.comment_submit_api, name='comment_submit_api'), # 飞图评论提交  | 
            |
| 37 | 
                + url(r'^f/comment/list$', group_views.comment_submit_api, name='comment_list_api'), # 飞图评论列表  | 
            |
| 38 | 
                + url(r'^f/thumbup/submit$', group_views.thumbup_submit_api, name='thumbup_submit_api'), # 飞图点赞提交  | 
            |
| 39 | 
                + url(r'^f/thumbup/list$', group_views.thumbup_list_api, name='thumbup_list_api'), # 飞图点赞列表  | 
            |
| 40 | 
                + url(r'^f/thumbup/cancel$', group_views.thumbup_cancel_api, name='thumbup_cancel_api'), # 飞图点赞取消  | 
            |
| 36 | 41 | 
                ]  | 
            
| 37 | 42 | 
                 | 
            
| 38 | 43 | 
                urlpatterns += [  | 
            
                @@ -24,4 +24,7 @@  | 
            ||
| 24 | 24 | 
                40224 —— 没有拒绝权限  | 
            
| 25 | 25 | 
                4027 —— 重复加群申请  | 
            
| 26 | 26 | 
                4028 —— 加群申请不存在  | 
            
| 27 | 
                - 4029 —— 该用户不在群组  | 
            |
| 27 | 
                + 4029 —— 该用户不在群组  | 
            |
| 28 | 
                +  | 
            |
| 29 | 
                +4、飞图信息 —— 403  | 
            |
| 30 | 
                + 4030 —— 飞图不存在  | 
            
                @@ -2,7 +2,7 @@  | 
            ||
| 2 | 2 | 
                 | 
            
| 3 | 3 | 
                from django.contrib import admin  | 
            
| 4 | 4 | 
                 | 
            
| 5 | 
                -from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo  | 
            |
| 5 | 
                +from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo, PhotoCommentInfo, PhotoThumbUpInfo  | 
            |
| 6 | 6 | 
                 | 
            
| 7 | 7 | 
                 | 
            
| 8 | 8 | 
                class GroupInfoAdmin(admin.ModelAdmin):  | 
            
                @@ -20,6 +20,18 @@ class GroupPhotoInfoAdmin(admin.ModelAdmin):  | 
            ||
| 20 | 20 | 
                     list_filter = ('status', )
               | 
            
| 21 | 21 | 
                 | 
            
| 22 | 22 | 
                 | 
            
| 23 | 
                +class PhotoCommentInfoAdmin(admin.ModelAdmin):  | 
            |
| 24 | 
                +    list_display = ('photo_id', 'user_id', 'nickname', 'avatar', 'comment', 'status', 'created_at', 'updated_at')
               | 
            |
| 25 | 
                +    list_filter = ('status', )
               | 
            |
| 26 | 
                +  | 
            |
| 27 | 
                +  | 
            |
| 28 | 
                +class PhotoThumbUpInfoAdmin(admin.ModelAdmin):  | 
            |
| 29 | 
                +    list_display = ('photo_id', 'user_id', 'nickname', 'avatar', 'thumbup', 'status', 'created_at', 'updated_at')
               | 
            |
| 30 | 
                +    list_filter = ('thumbup', 'status')
               | 
            |
| 31 | 
                +  | 
            |
| 32 | 
                +  | 
            |
| 23 | 33 | 
                admin.site.register(GroupInfo, GroupInfoAdmin)  | 
            
| 24 | 34 | 
                admin.site.register(GroupUserInfo, GroupUserInfoAdmin)  | 
            
| 25 | 35 | 
                admin.site.register(GroupPhotoInfo, GroupPhotoInfoAdmin)  | 
            
| 36 | 
                +admin.site.register(PhotoCommentInfo, PhotoCommentInfoAdmin)  | 
            |
| 37 | 
                +admin.site.register(PhotoThumbUpInfo, PhotoThumbUpInfoAdmin)  | 
            
                @@ -0,0 +1,32 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +from __future__ import unicode_literals  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import models, migrations  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('group', '0007_auto_20160112_2040'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.CreateModel(  | 
            |
| 15 | 
                + name='PhotoCommentInfo',  | 
            |
| 16 | 
                + fields=[  | 
            |
| 17 | 
                +                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
               | 
            |
| 18 | 
                +                ('status', models.BooleanField(default=True, help_text='\u72b6\u6001', verbose_name='status')),
               | 
            |
| 19 | 
                +                ('created_at', models.DateTimeField(help_text='\u521b\u5efa\u65f6\u95f4', verbose_name='created_at', auto_now_add=True)),
               | 
            |
| 20 | 
                +                ('updated_at', models.DateTimeField(help_text='\u66f4\u65b0\u65f6\u95f4', verbose_name='updated_at', auto_now=True)),
               | 
            |
| 21 | 
                +                ('photo_id', models.CharField(max_length=255, blank=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', null=True, verbose_name='photo_id', db_index=True)),
               | 
            |
| 22 | 
                +                ('user_id', models.CharField(help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=255, null=True, verbose_name='user_id', blank=True)),
               | 
            |
| 23 | 
                +                ('nickname', models.CharField(help_text='\u7528\u6237\u7fa4\u7ec4\u6635\u79f0', max_length=255, null=True, verbose_name='nickname', blank=True)),
               | 
            |
| 24 | 
                +                ('avatar', models.CharField(help_text='\u7528\u6237\u5934\u50cf', max_length=255, null=True, verbose_name='avatar', blank=True)),
               | 
            |
| 25 | 
                +                ('comment', models.TextField(help_text='\u7528\u6237\u8bc4\u8bba', null=True, verbose_name='comment', blank=True)),
               | 
            |
| 26 | 
                + ],  | 
            |
| 27 | 
                +            options={
               | 
            |
| 28 | 
                + 'verbose_name': 'photocommentinfo',  | 
            |
| 29 | 
                + 'verbose_name_plural': 'photocommentinfo',  | 
            |
| 30 | 
                + },  | 
            |
| 31 | 
                + ),  | 
            |
| 32 | 
                + ]  | 
            
                @@ -0,0 +1,32 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +from __future__ import unicode_literals  | 
            |
| 3 | 
                +  | 
            |
| 4 | 
                +from django.db import models, migrations  | 
            |
| 5 | 
                +  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +class Migration(migrations.Migration):  | 
            |
| 8 | 
                +  | 
            |
| 9 | 
                + dependencies = [  | 
            |
| 10 | 
                +        ('group', '0008_photocommentinfo'),
               | 
            |
| 11 | 
                + ]  | 
            |
| 12 | 
                +  | 
            |
| 13 | 
                + operations = [  | 
            |
| 14 | 
                + migrations.CreateModel(  | 
            |
| 15 | 
                + name='PhotoThumbUpInfo',  | 
            |
| 16 | 
                + fields=[  | 
            |
| 17 | 
                +                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
               | 
            |
| 18 | 
                +                ('status', models.BooleanField(default=True, help_text='\u72b6\u6001', verbose_name='status')),
               | 
            |
| 19 | 
                +                ('created_at', models.DateTimeField(help_text='\u521b\u5efa\u65f6\u95f4', verbose_name='created_at', auto_now_add=True)),
               | 
            |
| 20 | 
                +                ('updated_at', models.DateTimeField(help_text='\u66f4\u65b0\u65f6\u95f4', verbose_name='updated_at', auto_now=True)),
               | 
            |
| 21 | 
                +                ('photo_id', models.CharField(max_length=255, blank=True, help_text='\u98de\u56fe\u552f\u4e00\u6807\u8bc6', null=True, verbose_name='photo_id', db_index=True)),
               | 
            |
| 22 | 
                +                ('user_id', models.CharField(help_text='\u7528\u6237\u552f\u4e00\u6807\u8bc6', max_length=255, null=True, verbose_name='user_id', blank=True)),
               | 
            |
| 23 | 
                +                ('nickname', models.CharField(help_text='\u7528\u6237\u7fa4\u7ec4\u6635\u79f0', max_length=255, null=True, verbose_name='nickname', blank=True)),
               | 
            |
| 24 | 
                +                ('avatar', models.CharField(help_text='\u7528\u6237\u5934\u50cf', max_length=255, null=True, verbose_name='avatar', blank=True)),
               | 
            |
| 25 | 
                +                ('thumbup', models.BooleanField(default=True, help_text='\u7528\u6237\u70b9\u8d5e', db_index=True, verbose_name='thumbup')),
               | 
            |
| 26 | 
                + ],  | 
            |
| 27 | 
                +            options={
               | 
            |
| 28 | 
                + 'verbose_name': 'photothumbupinfo',  | 
            |
| 29 | 
                + 'verbose_name_plural': 'photothumbupinfo',  | 
            |
| 30 | 
                + },  | 
            |
| 31 | 
                + ),  | 
            |
| 32 | 
                + ]  | 
            
                @@ -137,3 +137,51 @@ class GroupPhotoInfo(CreateUpdateMixin):  | 
            ||
| 137 | 137 | 
                'photo_path': self.photo_url,  | 
            
| 138 | 138 | 
                'photo_thumbnail_path': self.photo_thumbnail_url,  | 
            
| 139 | 139 | 
                }  | 
            
| 140 | 
                +  | 
            |
| 141 | 
                +  | 
            |
| 142 | 
                +class PhotoCommentInfo(CreateUpdateMixin):  | 
            |
| 143 | 
                + photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)  | 
            |
| 144 | 
                + user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')  | 
            |
| 145 | 
                + nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')  | 
            |
| 146 | 
                + avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')  | 
            |
| 147 | 
                + comment = models.TextField(_(u'comment'), blank=True, null=True, help_text=u'用户评论')  | 
            |
| 148 | 
                +  | 
            |
| 149 | 
                + class Meta:  | 
            |
| 150 | 
                + verbose_name = _(u'photocommentinfo')  | 
            |
| 151 | 
                + verbose_name_plural = _(u'photocommentinfo')  | 
            |
| 152 | 
                +  | 
            |
| 153 | 
                + def __unicode__(self):  | 
            |
| 154 | 
                + return unicode(self.pk)  | 
            |
| 155 | 
                +  | 
            |
| 156 | 
                + @property  | 
            |
| 157 | 
                + def comment_info(self):  | 
            |
| 158 | 
                +        return {
               | 
            |
| 159 | 
                + 'user_id': self.user_id,  | 
            |
| 160 | 
                + 'nickname': self.nickname,  | 
            |
| 161 | 
                + 'avatar': self.avatar,  | 
            |
| 162 | 
                + 'comment': self.comment,  | 
            |
| 163 | 
                + 'created_at': self.created_at,  | 
            |
| 164 | 
                + }  | 
            |
| 165 | 
                +  | 
            |
| 166 | 
                +  | 
            |
| 167 | 
                +class PhotoThumbUpInfo(CreateUpdateMixin):  | 
            |
| 168 | 
                + photo_id = models.CharField(_(u'photo_id'), max_length=255, blank=True, null=True, help_text=u'飞图唯一标识', db_index=True)  | 
            |
| 169 | 
                + user_id = models.CharField(_(u'user_id'), max_length=255, blank=True, null=True, help_text=u'用户唯一标识')  | 
            |
| 170 | 
                + nickname = models.CharField(_(u'nickname'), max_length=255, blank=True, null=True, help_text=u'用户群组昵称')  | 
            |
| 171 | 
                + avatar = models.CharField(_(u'avatar'), max_length=255, blank=True, null=True, help_text=u'用户头像')  | 
            |
| 172 | 
                + thumbup = models.BooleanField(_(u'thumbup'), default=True, help_text=u'用户点赞', db_index=True)  | 
            |
| 173 | 
                +  | 
            |
| 174 | 
                + class Meta:  | 
            |
| 175 | 
                + verbose_name = _(u'photothumbupinfo')  | 
            |
| 176 | 
                + verbose_name_plural = _(u'photothumbupinfo')  | 
            |
| 177 | 
                +  | 
            |
| 178 | 
                + def __unicode__(self):  | 
            |
| 179 | 
                + return unicode(self.pk)  | 
            |
| 180 | 
                +  | 
            |
| 181 | 
                + @property  | 
            |
| 182 | 
                + def thumbup_info(self):  | 
            |
| 183 | 
                +        return {
               | 
            |
| 184 | 
                + 'user_id': self.user_id,  | 
            |
| 185 | 
                + 'nickname': self.nickname,  | 
            |
| 186 | 
                + 'avatar': self.avatar,  | 
            |
| 187 | 
                + }  | 
            
                @@ -8,7 +8,7 @@ from django.http import JsonResponse  | 
            ||
| 8 | 8 | 
                from rest_framework import viewsets  | 
            
| 9 | 9 | 
                 | 
            
| 10 | 10 | 
                from account.models import UserInfo  | 
            
| 11 | 
                -from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo  | 
            |
| 11 | 
                +from group.models import GroupInfo, GroupUserInfo, GroupPhotoInfo, PhotoCommentInfo, PhotoThumbUpInfo  | 
            |
| 12 | 12 | 
                from group.serializers import GroupInfoSerializer, GroupUserInfoSerializer, GroupPhotoInfoSerializer  | 
            
| 13 | 13 | 
                 | 
            
| 14 | 14 | 
                from utils.thumbnail_utils import make_thumb  | 
            
                @@ -517,6 +517,223 @@ def flyimg_upload_api(request):  | 
            ||
| 517 | 517 | 
                })  | 
            
| 518 | 518 | 
                 | 
            
| 519 | 519 | 
                 | 
            
| 520 | 
                +def comment_submit_api(request):  | 
            |
| 521 | 
                +    group_id = request.POST.get('group_id', '')
               | 
            |
| 522 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 523 | 
                +    photo_id = request.POST.get('photo_id', '')
               | 
            |
| 524 | 
                +    comment = request.POST.get('comment', '')
               | 
            |
| 525 | 
                +  | 
            |
| 526 | 
                +    current_id = int(request.POST.get('current_id', -1))
               | 
            |
| 527 | 
                +  | 
            |
| 528 | 
                + try:  | 
            |
| 529 | 
                + group = GroupInfo.objects.get(group_id=group_id)  | 
            |
| 530 | 
                + except GroupInfo.DoesNotExist:  | 
            |
| 531 | 
                +        return JsonResponse({
               | 
            |
| 532 | 
                + 'status': 4020,  | 
            |
| 533 | 
                + 'message': u'群组不存在',  | 
            |
| 534 | 
                + })  | 
            |
| 535 | 
                +  | 
            |
| 536 | 
                + try:  | 
            |
| 537 | 
                + group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)  | 
            |
| 538 | 
                + except GroupUserInfo.DoesNotExist:  | 
            |
| 539 | 
                +        return JsonResponse({
               | 
            |
| 540 | 
                + 'status': 4029,  | 
            |
| 541 | 
                + 'message': u'该用户不在群组',  | 
            |
| 542 | 
                + })  | 
            |
| 543 | 
                +  | 
            |
| 544 | 
                + try:  | 
            |
| 545 | 
                + group_photo = GroupPhotoInfo.objects.get(pk=photo_id)  | 
            |
| 546 | 
                + except GroupPhotoInfo.DoesNotExist:  | 
            |
| 547 | 
                +        return JsonResponse({
               | 
            |
| 548 | 
                + 'status': 4030,  | 
            |
| 549 | 
                + 'message': u'飞图不存在',  | 
            |
| 550 | 
                + })  | 
            |
| 551 | 
                +  | 
            |
| 552 | 
                + if comment:  | 
            |
| 553 | 
                + PhotoCommentInfo.objects.create(  | 
            |
| 554 | 
                + photo_id=photo_id,  | 
            |
| 555 | 
                + user_id=user_id,  | 
            |
| 556 | 
                + nickname=group_user.nickname,  | 
            |
| 557 | 
                + avatar=group_user.avatar,  | 
            |
| 558 | 
                + comment=comment,  | 
            |
| 559 | 
                + )  | 
            |
| 560 | 
                +  | 
            |
| 561 | 
                + photo_comments = PhotoCommentInfo.objects.filter(  | 
            |
| 562 | 
                + photo_id=photo_id,  | 
            |
| 563 | 
                + pk__gt=current_id  | 
            |
| 564 | 
                + )  | 
            |
| 565 | 
                + latest_comment = photo_comments.last()  | 
            |
| 566 | 
                +  | 
            |
| 567 | 
                +    return JsonResponse({
               | 
            |
| 568 | 
                + 'status': 200,  | 
            |
| 569 | 
                + 'message': u'评论成功',  | 
            |
| 570 | 
                +        'data': {
               | 
            |
| 571 | 
                + 'current_id': latest_comment and latest_comment.pk or current_id,  | 
            |
| 572 | 
                + 'comments': [comment.comment_info for comment in photo_comments],  | 
            |
| 573 | 
                + }  | 
            |
| 574 | 
                + })  | 
            |
| 575 | 
                +  | 
            |
| 576 | 
                +  | 
            |
| 577 | 
                +def thumbup_submit_api(request):  | 
            |
| 578 | 
                +    group_id = request.POST.get('group_id', '')
               | 
            |
| 579 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 580 | 
                +    photo_id = request.POST.get('photo_id', '')
               | 
            |
| 581 | 
                +  | 
            |
| 582 | 
                + try:  | 
            |
| 583 | 
                + group = GroupInfo.objects.get(group_id=group_id)  | 
            |
| 584 | 
                + except GroupInfo.DoesNotExist:  | 
            |
| 585 | 
                +        return JsonResponse({
               | 
            |
| 586 | 
                + 'status': 4020,  | 
            |
| 587 | 
                + 'message': u'群组不存在',  | 
            |
| 588 | 
                + })  | 
            |
| 589 | 
                +  | 
            |
| 590 | 
                + try:  | 
            |
| 591 | 
                + group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)  | 
            |
| 592 | 
                + except GroupUserInfo.DoesNotExist:  | 
            |
| 593 | 
                +        return JsonResponse({
               | 
            |
| 594 | 
                + 'status': 4029,  | 
            |
| 595 | 
                + 'message': u'该用户不在群组',  | 
            |
| 596 | 
                + })  | 
            |
| 597 | 
                +  | 
            |
| 598 | 
                + try:  | 
            |
| 599 | 
                + group_photo = GroupPhotoInfo.objects.get(pk=photo_id)  | 
            |
| 600 | 
                + except GroupPhotoInfo.DoesNotExist:  | 
            |
| 601 | 
                +        return JsonResponse({
               | 
            |
| 602 | 
                + 'status': 4030,  | 
            |
| 603 | 
                + 'message': u'飞图不存在',  | 
            |
| 604 | 
                + })  | 
            |
| 605 | 
                +  | 
            |
| 606 | 
                + photo_thumbup, created = PhotoThumbUpInfo.objects.get_or_create(  | 
            |
| 607 | 
                + photo_id=photo_id,  | 
            |
| 608 | 
                + user_id=user_id,  | 
            |
| 609 | 
                +        # defaults={
               | 
            |
| 610 | 
                + # 'nickname': group_user.nickname,  | 
            |
| 611 | 
                + # 'avatar': group_user.avatar,  | 
            |
| 612 | 
                + # }  | 
            |
| 613 | 
                + )  | 
            |
| 614 | 
                + photo_thumbup.nickname = group_user.nickname  | 
            |
| 615 | 
                + photo_thumbup.avatar = group_user.avatar  | 
            |
| 616 | 
                + photo_thumbup.thumbup = True  | 
            |
| 617 | 
                + photo_thumbup.save()  | 
            |
| 618 | 
                +  | 
            |
| 619 | 
                + photo_thumbups = PhotoThumbUpInfo.objects.filter(  | 
            |
| 620 | 
                + photo_id=photo_id,  | 
            |
| 621 | 
                + thumbup=True,  | 
            |
| 622 | 
                + )  | 
            |
| 623 | 
                +  | 
            |
| 624 | 
                +    return JsonResponse({
               | 
            |
| 625 | 
                + 'status': 200,  | 
            |
| 626 | 
                + 'message': u'点赞提交成功',  | 
            |
| 627 | 
                +        'data': {
               | 
            |
| 628 | 
                + 'thumbup': True,  | 
            |
| 629 | 
                + 'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],  | 
            |
| 630 | 
                + }  | 
            |
| 631 | 
                + })  | 
            |
| 632 | 
                +  | 
            |
| 633 | 
                +  | 
            |
| 634 | 
                +def thumbup_list_api(request):  | 
            |
| 635 | 
                +    group_id = request.POST.get('group_id', '')
               | 
            |
| 636 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 637 | 
                +    photo_id = request.POST.get('photo_id', '')
               | 
            |
| 638 | 
                +  | 
            |
| 639 | 
                + try:  | 
            |
| 640 | 
                + group = GroupInfo.objects.get(group_id=group_id)  | 
            |
| 641 | 
                + except GroupInfo.DoesNotExist:  | 
            |
| 642 | 
                +        return JsonResponse({
               | 
            |
| 643 | 
                + 'status': 4020,  | 
            |
| 644 | 
                + 'message': u'群组不存在',  | 
            |
| 645 | 
                + })  | 
            |
| 646 | 
                +  | 
            |
| 647 | 
                + try:  | 
            |
| 648 | 
                + group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)  | 
            |
| 649 | 
                + except GroupUserInfo.DoesNotExist:  | 
            |
| 650 | 
                +        return JsonResponse({
               | 
            |
| 651 | 
                + 'status': 4029,  | 
            |
| 652 | 
                + 'message': u'该用户不在群组',  | 
            |
| 653 | 
                + })  | 
            |
| 654 | 
                +  | 
            |
| 655 | 
                + try:  | 
            |
| 656 | 
                + group_photo = GroupPhotoInfo.objects.get(pk=photo_id)  | 
            |
| 657 | 
                + except GroupPhotoInfo.DoesNotExist:  | 
            |
| 658 | 
                +        return JsonResponse({
               | 
            |
| 659 | 
                + 'status': 4030,  | 
            |
| 660 | 
                + 'message': u'飞图不存在',  | 
            |
| 661 | 
                + })  | 
            |
| 662 | 
                +  | 
            |
| 663 | 
                + try:  | 
            |
| 664 | 
                + thumbup = PhotoThumbUpInfo.objects.get(  | 
            |
| 665 | 
                + photo_id=photo_id,  | 
            |
| 666 | 
                + user_id=user_id,  | 
            |
| 667 | 
                + ).thumbup  | 
            |
| 668 | 
                + except PhotoThumbUpInfo.DoesNotExist:  | 
            |
| 669 | 
                + thumbup = False  | 
            |
| 670 | 
                +  | 
            |
| 671 | 
                + photo_thumbups = PhotoThumbUpInfo.objects.filter(  | 
            |
| 672 | 
                + photo_id=photo_id,  | 
            |
| 673 | 
                + thumbup=True,  | 
            |
| 674 | 
                + )  | 
            |
| 675 | 
                +  | 
            |
| 676 | 
                +    return JsonResponse({
               | 
            |
| 677 | 
                + 'status': 200,  | 
            |
| 678 | 
                + 'message': u'获取点赞列表成功',  | 
            |
| 679 | 
                +        'data': {
               | 
            |
| 680 | 
                + 'thumbup': thumbup,  | 
            |
| 681 | 
                + 'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],  | 
            |
| 682 | 
                + }  | 
            |
| 683 | 
                + })  | 
            |
| 684 | 
                +  | 
            |
| 685 | 
                +  | 
            |
| 686 | 
                +def thumbup_cancel_api(request):  | 
            |
| 687 | 
                +    group_id = request.POST.get('group_id', '')
               | 
            |
| 688 | 
                +    user_id = request.POST.get('user_id', '')
               | 
            |
| 689 | 
                +    photo_id = request.POST.get('photo_id', '')
               | 
            |
| 690 | 
                +  | 
            |
| 691 | 
                + try:  | 
            |
| 692 | 
                + group = GroupInfo.objects.get(group_id=group_id)  | 
            |
| 693 | 
                + except GroupInfo.DoesNotExist:  | 
            |
| 694 | 
                +        return JsonResponse({
               | 
            |
| 695 | 
                + 'status': 4020,  | 
            |
| 696 | 
                + 'message': u'群组不存在',  | 
            |
| 697 | 
                + })  | 
            |
| 698 | 
                +  | 
            |
| 699 | 
                + try:  | 
            |
| 700 | 
                + group_user = GroupUserInfo.objects.get(group_id=group_id, user_id=user_id, user_status=GroupUserInfo.PASSED)  | 
            |
| 701 | 
                + except GroupUserInfo.DoesNotExist:  | 
            |
| 702 | 
                +        return JsonResponse({
               | 
            |
| 703 | 
                + 'status': 4029,  | 
            |
| 704 | 
                + 'message': u'该用户不在群组',  | 
            |
| 705 | 
                + })  | 
            |
| 706 | 
                +  | 
            |
| 707 | 
                + try:  | 
            |
| 708 | 
                + group_photo = GroupPhotoInfo.objects.get(pk=photo_id)  | 
            |
| 709 | 
                + except GroupPhotoInfo.DoesNotExist:  | 
            |
| 710 | 
                +        return JsonResponse({
               | 
            |
| 711 | 
                + 'status': 4030,  | 
            |
| 712 | 
                + 'message': u'飞图不存在',  | 
            |
| 713 | 
                + })  | 
            |
| 714 | 
                +  | 
            |
| 715 | 
                + photo_thumbup, created = PhotoThumbUpInfo.objects.get_or_create(  | 
            |
| 716 | 
                + photo_id=photo_id,  | 
            |
| 717 | 
                + user_id=user_id,  | 
            |
| 718 | 
                + )  | 
            |
| 719 | 
                + photo_thumbup.thumbup = False  | 
            |
| 720 | 
                + photo_thumbup.save()  | 
            |
| 721 | 
                +  | 
            |
| 722 | 
                + photo_thumbups = PhotoThumbUpInfo.objects.filter(  | 
            |
| 723 | 
                + photo_id=photo_id,  | 
            |
| 724 | 
                + thumbup=True,  | 
            |
| 725 | 
                + )  | 
            |
| 726 | 
                +  | 
            |
| 727 | 
                +    return JsonResponse({
               | 
            |
| 728 | 
                + 'status': 200,  | 
            |
| 729 | 
                + 'message': u'点赞取消成功',  | 
            |
| 730 | 
                +        'data': {
               | 
            |
| 731 | 
                + 'thumbup': False,  | 
            |
| 732 | 
                + 'thumbups': [thumbup.thumbup_info for thumbup in photo_thumbups],  | 
            |
| 733 | 
                + }  | 
            |
| 734 | 
                + })  | 
            |
| 735 | 
                +  | 
            |
| 736 | 
                +  | 
            |
| 520 | 737 | 
                class GroupInfoViewSet(viewsets.ModelViewSet):  | 
            
| 521 | 738 | 
                     queryset = GroupInfo.objects.all().order_by('-created_at')
               | 
            
| 522 | 739 | 
                serializer_class = GroupInfoSerializer  | 
            
                @@ -1,10 +1,6 @@  | 
            ||
| 1 | 1 | 
                # -*- coding: utf-8 -*-  | 
            
| 2 | 2 | 
                 | 
            
| 3 | 
                -from django.conf import settings  | 
            |
| 4 | 
                -from django.core.files.storage import default_storage  | 
            |
| 5 | 
                -from django.db import transaction  | 
            |
| 6 | 3 | 
                from django.http import JsonResponse  | 
            
| 7 | 
                -from django.shortcuts import render, redirect  | 
            |
| 8 | 4 | 
                 | 
            
| 9 | 5 | 
                from operation.models import LatestAppInfo, SplashInfo  | 
            
| 10 | 6 | 
                 |